package example.java.lang.reflect.ParameterizedType;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;

public class ParameterizedTypeExample {

	public static void main(String[] args) {
		//返回表示此 Class 所表示的实体（类、接口、基本类型或 void）的直接超类的 Type。
		Type type = StringList.class.getGenericSuperclass();
		
		//java.util.ArrayList<java.lang.String>
		System.out.println(type);
		
		//ParameterizedType 表示参数化类型，如 Collection<String>。 
		ParameterizedType pt = (ParameterizedType) type;
		
		System.out.println(pt.getActualTypeArguments()[0]);
	}
}

@SuppressWarnings("serial")
class StringList extends ArrayList<String> {}
